<!DOCTYPE html>
<html>

  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
	<meta http-equiv="Cache-Control" content="no-siteapp" />

    <title>xmake v2.3.9 released, Add independent Xrepo C/C++ package manager</title>
    <meta name="description" content="xmake is a lightweight cross-platform build tool based on Lua. It uses xmake.lua to maintain project builds. Compared with makefile/CMakeLists.txt, the confi...">

    
    <meta name="keywords" content="xmake,lua,C/C++,toolchains,xrepo,packages,vcpkg,conan,tboox" /> 

    <!-- qq oauth -->
    <meta property="qc:admins" content="5211601217706727767255" />

    <!--icon -->
    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
    <link rel="icon" sizes="192x192" href="/static/img/nice-highres.png" />
	<link rel="apple-touch-icon-precomposed" href="/static/img/apple-touch-icon-57x57-precomposed.png" />
	<link rel="apple-touch-icon-precomposed" sizes="72x72" href="/static/img/apple-touch-icon-72x72-precomposed.png" />
	<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/static/img/apple-touch-icon-114x114-precomposed.png" />
	<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/static/img/apple-touch-icon-144x144-precomposed.png" />
	<link rel="apple-touch-icon-precomposed" sizes="180x180" href="/static/img/retinahd_icon.png" />
	<meta name="msapplication-TileImage" content="/static/img/retinahd_icon.png" />
	
    <link rel="stylesheet" href=" /css/fontawesome/css/font-awesome.min.css ">
    <link rel="stylesheet" href=" /css/main.css ">
    <link rel="canonical" href="https://tboox.org/2020/11/24/xmake-update-v2.3.9/">
    <link rel="alternate" type="application/rss+xml" title="TBOOX Open Source Project" href="https://tboox.org/feed.xml ">
    <link rel="alternate" hreflang="en" href="https://tboox.org/" />
    <link rel="alternate" hreflang="zh-Hans" href="https://tboox.org/cn/" />




    <script type="text/javascript">
    function isPC(){    
        var userAgentInfo = navigator.userAgent;  
        var Agents = new Array("Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod");    
        var flag = true;    
        for (var v = 0; v < Agents.length; v++) {    
            if (userAgentInfo.indexOf(Agents[v]) > 0) { flag = false; break; }    
        }    
        return flag;    
    }
    </script>

<!-- baidu ads -->



    <!-- baidu ads -->

</head>


  <body>

    <header id="top">
    <div class="wrapper">
        <a href="/" class="brand">TBOOX</a>
        <button id="headerMenu" class="menu"><i class="fa fa-bars"></i></button>
        <nav id="headerNav">
            <ul>
                <li>
                    
                    <a href="/cn?lang=0">
                    
                        <i class="fa fa-home"></i>中文
                    </a>
                </li>

                
                    
                     
                    
                
                    
                     
                     
                    <li>

                        
                            
                            <a href="/project/">
                            
                        
                            <i class="fa fa-bookmark"></i>Projects
                        </a>
                    </li>
                    
                    
                    
                
                    
                     
                    
                
                    
                     
                     
                    <li>

                        
                            
                            <a href="/archive/">
                            
                        
                            <i class="fa fa-archive"></i>Archives
                        </a>
                    </li>
                    
                    
                    
                
                    
                     
                    
                
                    
                     
                     
                    <li>

                        
                            
                            <a href="/category/">
                            
                        
                            <i class="fa fa-th-list"></i>Categories
                        </a>
                    </li>
                    
                    
                    
                
                    
                     
                    
                
                    
                     
                     
                    <li>

                        
                            
                            <a href="/tag/">
                            
                        
                            <i class="fa fa-tags"></i>Tags
                        </a>
                    </li>
                    
                    
                    
                
                    
                
                    
                     
                    
                
                    
                     
                     
                    <li>

                        
                            
                            <a href="/docs/">
                            
                        
                            <i class="fa fa-book"></i>Documents
                        </a>
                    </li>
                    
                    
                    
                
                    
                     
                    
                
                    
                     
                     
                    <li>

                        
                            
                            <a href="https://xmake.io/#/about/contact" target="_blank" >
                            
                        
                            <i class="fa fa-forumbee"></i>Community
                        </a>
                    </li>
                    
                    
                    
                
                    
                     
                    
                
                    
                     
                     
                    <li>

                        
                            
                            <a href="/donation/">
                            
                        
                            <i class="fa fa-heart"></i>Donate
                        </a>
                    </li>
                    
                    
                    
                
                    
                     
                    
                
                    
                     
                     
                    <li>

                        
                            
                            <a href="/about/">
                            
                        
                            <i class="fa fa-user"></i>About
                        </a>
                    </li>
                    
                    
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                     
                     
                    
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            </ul>
        </nav>
    </div>
</header>



        <div class="page clearfix" post>
    <div class="left">
        <h1>xmake v2.3.9 released, Add independent Xrepo C/C++ package manager</h1>
        <div class="label">

            <div class="label-card">
                <i class="fa fa-calendar"></i>2020-11-24
            </div>

            <div class="label-card">
                
            </div>

            <div class="label-card">
                
            </div>

            <div class="label-card">
            


<!-- <span class="point">•</span> -->
<span class="categories">
  <i class="fa fa-th-list"></i>
  
    
        <a href="/category/#xmake" title="Category: xmake" rel="category">xmake</a>
    
  

  <!-- <span class="point">•</span> -->
</span>


            </div>

            <div class="label-card">
            
<!-- <span class="point">•</span> -->
<span class="pageTag">
  <i class="fa fa-tags"></i>
  
    
        <!--a href="/tag/#xmake" title="Tag: xmake" rel="tag">xmake</a-->
        <a href="/tag/#xmake" title="Tag: xmake" rel="tag">xmake</a>&nbsp;
    
        <!--a href="/tag/#lua" title="Tag: lua" rel="tag">lua</a-->
        <a href="/tag/#lua" title="Tag: lua" rel="tag">lua</a>&nbsp;
    
        <!--a href="/tag/#C%2FC%2B%2B" title="Tag: C/C++" rel="tag">C/C++</a-->
        <a href="/tag/#C/C++" title="Tag: C/C++" rel="tag">C/C++</a>&nbsp;
    
        <!--a href="/tag/#toolchains" title="Tag: toolchains" rel="tag">toolchains</a-->
        <a href="/tag/#toolchains" title="Tag: toolchains" rel="tag">toolchains</a>&nbsp;
    
        <!--a href="/tag/#xrepo" title="Tag: xrepo" rel="tag">xrepo</a-->
        <a href="/tag/#xrepo" title="Tag: xrepo" rel="tag">xrepo</a>&nbsp;
    
        <!--a href="/tag/#packages" title="Tag: packages" rel="tag">packages</a-->
        <a href="/tag/#packages" title="Tag: packages" rel="tag">packages</a>&nbsp;
    
        <!--a href="/tag/#vcpkg" title="Tag: vcpkg" rel="tag">vcpkg</a-->
        <a href="/tag/#vcpkg" title="Tag: vcpkg" rel="tag">vcpkg</a>&nbsp;
    
        <!--a href="/tag/#conan" title="Tag: conan" rel="tag">conan</a-->
        <a href="/tag/#conan" title="Tag: conan" rel="tag">conan</a>
    
  

</span>

            </div>

        </div>
        <hr>
        <article itemscope itemtype="http://schema.org/BlogPosting">
        <p><a href="https://github.com/xmake-io/xmake">xmake</a> is a lightweight cross-platform build tool based on Lua. It uses xmake.lua to maintain project builds. Compared with makefile/CMakeLists.txt, the configuration syntax is more Concise and intuitive, very friendly to novices, can get started quickly in a short time, allowing users to focus more on the actual project development.</p>

<p>In this new version, we focus on improving the dependency package management of xmake, adding support for the pacman package manager under Archlinux and MSYS2/Mingw, and we have further enriched the official package repository of xmake <a href="https: //github.com/xmake-io/xmake-repo">xmake-repo</a>, more than 50 commonly used C/C++ packages have been added.</p>

<p>In addition, we have added an independent subcommand based on xmake: <a href="https://github.com/xmake-io/xrepo/">xrepo</a>, a complete and independent cross-platform C/C++ package manager, which is convenient for users Conveniently manage the installation and integrated use of daily C/C++ packages.</p>

<p>At the same time, we have also released the xrepo related site <a href="https://xrepo.xmake.io">xrepo.xmake.io</a>, we can quickly check the usage of xrepo and each package in the official xmake-repo repository. Support and usage of</p>

<ul>
  <li><a href="https://github.com/xmake-io/xmake">Project source code</a></li>
  <li><a href="https://xmake.io/">Official Document</a></li>
  <li><a href="https://github.com/xmake-io/xrepo">Xrepo Command</a></li>
</ul>

<h2 id="new-feature-introduction">New feature introduction</h2>

<h3 id="xrepo-package-manager">Xrepo Package Manager</h3>

<p>xrepo is a cross-platform C/C++ package manager based on <a href="https://github.com/xmake-io/xmake">Xmake</a>.</p>

<p>It is based on the runtime provided by xmake, but it is a complete and independent package management program. Compared with package managers such as vcpkg/homebrew, xrepo can provide C/C++ packages for more platforms and architectures at the same time.</p>

<p>And it also supports multi-version semantic selection. In addition, it is also a decentralized distributed warehouse. It not only provides the official <a href="https://github.com/xmake-io/xmake-repo">xmake-repo</a> warehouse, It also supports users to build multiple private warehouses.</p>

<p>At the same time, xrepo also supports installing packages from third-party package managers such as vcpkg/homebrew/conan, and provides unified and consistent library link information to facilitate integration and docking with third-party projects.</p>

<p>If you want to know more, please refer to: <a href="https://xrepo.xmake.io/#/zh-cn/getting_started">online documentation</a>, <a href="https://github.com/xmake-io /xrepo">Github</a> and <a href="https://gitee.com/tboox/xrepo">Gitee</a></p>

<p><img src="https://xrepo.xmake.io/assets/img/xrepo.gif" alt="" /></p>

<h4 id="installation">Installation</h4>

<p>We only need to install xmake to use the xrepo command. For the installation of xmake, we can see: <a href="https://xmake.io/#/zh-cn/guide/installation">xmake installation document</a>.</p>

<h4 id="support-platform">Support platform</h4>

<ul>
  <li>Windows (x86, x64)</li>
  <li>macOS (i386, x86_64, arm64)</li>
  <li>Linux (i386, x86_64, cross-toolchains ..)</li>
  <li>*BSD (i386, x86_64)</li>
  <li>Android (x86, x86_64, armeabi, armeabi-v7a, arm64-v8a)</li>
  <li>iOS (armv7, armv7s, arm64, i386, x86_64)</li>
  <li>MSYS (i386, x86_64)</li>
  <li>MinGW (i386, x86_64, arm, arm64)</li>
  <li>Cross Toolchains</li>
</ul>

<h4 id="supported-package-management-warehouse">Supported package management warehouse</h4>

<ul>
  <li>Official self-built warehouse <a href="https://github.com/xmake-io/xmake-repo">xmake-repo</a> (tbox &gt;1.6.1)</li>
  <li><a href="https://xmake.io/#/zh-cn/package/remote_package?id=%e4%bd%bf%e7%94%a8%e8%87%aa%e5%bb %ba%e7%a7%81%e6%9c%89%e5%8c%85%e4%bb%93%e5%ba%93">User-built warehouse</a></li>
  <li>Conan (conan::openssl/1.1.1g)</li>
  <li>Vcpkg (vcpkg:ffmpeg)</li>
  <li>Homebrew/Linuxbrew (brew::pcre2/libpcre2-8)</li>
  <li>Pacman on archlinux/msys2 (pacman::libcurl)</li>
  <li>Clib (clib::clibs/bytes@0.0.4)</li>
  <li>Dub (dub::log 0.4.3)</li>
</ul>

<h4 id="distributed-repository-support">Distributed repository support</h4>

<p>In addition to directly retrieve the installation package from the official repository: <a href="https://github.com/xmake-io/xmake-repo">xmake-repo</a>,
We can also add any number of self-built warehouses, and even completely isolate the external network, and only maintain the installation and integration of private packages on the company’s internal network.</p>

<p>Just use the following command to add your own warehouse address:</p>

<div class="language-console highlighter-rouge"><pre class="highlight"><code><span class="w">$ </span><span class="nc">xrepo</span><span class="kv"> add-repo myrepo https://github.com/mygroup/myrepo
</span></code></pre>
</div>

<h4 id="install-cc-package-independently">Install C/C++ package independently</h4>

<p>Various installation methods are available, supporting semantic version, debugging package, dynamic library, configurable parameters, and C/C++ package installation in various third-party package management.</p>

<div class="language-console highlighter-rouge"><pre class="highlight"><code><span class="w">$ </span><span class="nc">xrepo</span><span class="kv"> install zlib tbox
</span><span class="w">$ </span><span class="nc">xrepo</span><span class="kv"> install "zlib 1.2.x"
</span><span class="w">$ </span><span class="nc">xrepo</span><span class="kv"> install "zlib &gt;=1.2.0"
</span><span class="w">$ </span><span class="nc">xrepo</span><span class="kv"> install -p iphoneos -a arm64 zlib
</span><span class="w">$ </span><span class="nc">xrepo</span><span class="kv"> install -p android [--ndk=/xxx] zlib
</span><span class="w">$ </span><span class="nc">xrepo</span><span class="kv"> install -p mingw [--mingw=/xxx] zlib
</span><span class="w">$ </span><span class="nc">xrepo</span><span class="kv"> install -p cross --sdk=/xxx/arm-linux-musleabi-cross zlib
</span><span class="w">$ </span><span class="nc">xrepo</span><span class="kv"> install -m debug zlib
</span><span class="w">$ </span><span class="nc">xrepo</span><span class="kv"> install -k shared zlib
</span><span class="w">$ </span><span class="nc">xrepo</span><span class="kv"> install -f "vs_runtime=MD" zlib
</span><span class="w">$ </span><span class="nc">xrepo</span><span class="kv"> install -f "regex=true,thread=true" boost
</span><span class="w">$ </span><span class="nc">xrepo</span><span class="kv"> install brew::zlib
</span><span class="w">$ </span><span class="nc">xrepo</span><span class="kv"> install vcpkg::zlib
</span><span class="w">$ </span><span class="nc">xrepo</span><span class="kv"> install conan::zlib/1.2.11
</span><span class="w">$ </span><span class="nc">xrepo</span><span class="kv"> install pacman:libpng
</span><span class="w">$ </span><span class="nc">xrepo</span><span class="kv"> install dub:log
</span></code></pre>
</div>

<h4 id="seamless-integration-with-xmake-project">Seamless integration with xmake project</h4>

<div class="language-lua highlighter-rouge"><pre class="highlight"><code><span class="n">add_requires</span><span class="p">(</span><span class="s2">"tbox &gt;1.6.1"</span><span class="p">,</span> <span class="s2">"libuv master"</span><span class="p">,</span> <span class="s2">"vcpkg::ffmpeg"</span><span class="p">,</span> <span class="s2">"brew::pcre2/libpcre2-8"</span><span class="p">)</span>
<span class="n">add_requires</span><span class="p">(</span><span class="s2">"conan::openssl/1.1.1g"</span><span class="p">,</span> <span class="p">{</span><span class="n">alias</span> <span class="o">=</span> <span class="s2">"openssl"</span><span class="p">,</span> <span class="n">optional</span> <span class="o">=</span> <span class="kc">true</span><span class="p">,</span> <span class="n">debug</span> <span class="o">=</span> <span class="kc">true</span><span class="p">})</span>
<span class="n">target</span><span class="p">(</span><span class="s2">"test"</span><span class="p">)</span>
    <span class="n">set_kind</span><span class="p">(</span><span class="s2">"binary"</span><span class="p">)</span>
    <span class="n">add_files</span><span class="p">(</span><span class="s2">"src/*.c"</span><span class="p">)</span>
    <span class="n">add_packages</span><span class="p">(</span><span class="s2">"tbox"</span><span class="p">,</span> <span class="s2">"libuv"</span><span class="p">,</span> <span class="s2">"vcpkg::ffmpeg"</span><span class="p">,</span> <span class="s2">"brew::pcre2/libpcre2-8"</span><span class="p">,</span> <span class="s2">"openssl"</span><span class="p">)</span>
</code></pre>
</div>

<p>The following is the overall architecture and compilation process integrated with xmake.</p>

<p><img src="https://xmake.io/assets/img/index/package_arch.png" width="650px" /></p>

<p>For more information about how to use xrepo, please refer to the document: <a href="https://xrepo.xmake.io/#/zh-cn/getting_started">Xrepo Quick Start</a>.</p>

<h3 id="support-the-installation-of-cross-compiled-dependency-packages">Support the installation of cross-compiled dependency packages</h3>

<p>In the new version, we have improved the dependency package installation mechanism inside xmake, and added support for the installation of C/C++ dependency packages for the cross-compilation tool chain, for example:</p>

<div class="language-lua highlighter-rouge"><pre class="highlight"><code><span class="n">add_requires</span><span class="p">(</span><span class="s2">"zlib"</span><span class="p">,</span> <span class="s2">"openssl"</span><span class="p">)</span>
<span class="n">target</span><span class="p">(</span><span class="s2">"test"</span><span class="p">)</span>
    <span class="n">set_kind</span><span class="p">(</span><span class="s2">"binary"</span><span class="p">)</span>
    <span class="n">add_files</span><span class="p">(</span><span class="s2">"src/*.c"</span><span class="p">)</span>
    <span class="n">add_packages</span><span class="p">(</span><span class="s2">"zlib"</span><span class="p">,</span> <span class="s2">"openssl"</span><span class="p">)</span>
</code></pre>
</div>

<p>We have configured two dependency packages above: zlib, openssl, and then we switch to the cross-compilation environment and use the compilation tool chain on musl.cc to compile.</p>

<div class="language-console highlighter-rouge"><pre class="highlight"><code><span class="w">$ </span><span class="nc">xmake</span><span class="kv"> f -p cross --sdk=/tmp/arm-linux-musleabi-cross
</span>in xmake-repo:
  -&gt; openssl 1.1.1h
please input: y (y/n)

  =&gt; http://zlib.net/zlib-1.2.11.tar.gz .. ok
  =&gt; download https://github.com/openssl/openssl/archive/OpenSSL_1_1_1h.zip .. ok
  =&gt; installing zlib .. ok
  =&gt; installing openssl .. ok
<span class="w">$ </span><span class="nc">xmake</span><span class="kv">
</span>[50%]: ccache compiling.release src/main.cpp
[75%]: linking.release test
[100%]: build ok!
</code></pre>
</div>

<p>xmake will automatically pull the zlib/openssl source code package, and then use the <code class="highlighter-rouge">arm-linux-musleabi-cross</code> cross tool chain to compile and install zlib and openssl. After the installation is complete, it will be automatically integrated into the test project to participate in the link until it is fully compiled.</p>

<p>Of course, to make C/C++ support cross-compilation, you first need to maintain the official xmake-repo repository and increase the support for cross-compilation. At present, there are not many C/C++ packages that support crossover in the warehouse, but many have already been included, and they will continue to be expanded in the future.</p>

<p>If you want to see which packages support cross-compilation, you can go directly to the package warehouse site to view: <a href="https://xrepo.xmake.io/#/packages/cross">List of C/C++ packages that support cross-compilation</a></p>

<p>We can also use the xrepo command provided in the new version to directly retrieve the packages supported by the specified platform (support fuzzy query):</p>

<div class="language-console highlighter-rouge"><pre class="highlight"><code><span class="w">$ </span><span class="nc">xrepo</span><span class="kv"> search -p cross zli*
</span></code></pre>
</div>

<p>We also welcome everyone to help contribute more packages to the official repository of <a href="https://github.com/xmake-io/xmake-repo">xmake-repo</a>, and work together to improve the construction of the C/C++ package management ecosystem so that users can It is more convenient to use various dependency packages, and no longer be bothered by various tedious porting tasks.</p>

<h3 id="package-license-detection-mechanism">Package license detection mechanism</h3>

<p>Taking into account the different licenses of the packages in the warehouse, some packages may conflict with the license of the user project after use, so xmake adds a package dependency license compatibility detection mechanism in the new version.</p>

<p>And a new <code class="highlighter-rouge">set_license</code> interface is added, allowing users to set the license of each target.</p>

<p>For example, we integrated a LGPL-2.0 package libplist library, but our project does not have any license settings.</p>

<div class="language-lua highlighter-rouge"><pre class="highlight"><code><span class="n">add_requires</span><span class="p">(</span><span class="s2">"libplist"</span><span class="p">)</span> <span class="o">-</span> <span class="n">LGPL</span><span class="o">-</span><span class="mi">2</span><span class="p">.</span><span class="mi">0</span>
<span class="n">target</span><span class="p">(</span><span class="s2">"test"</span><span class="p">)</span>
    <span class="n">set_kind</span><span class="p">(</span><span class="s2">"binary"</span><span class="p">)</span>
    <span class="n">add_files</span><span class="p">(</span><span class="s2">"src/*.cpp"</span><span class="p">)</span>
    <span class="n">add_packages</span><span class="p">(</span><span class="s2">"libplist"</span><span class="p">)</span>
</code></pre>
</div>

<p>When compiling, there will be the following prompt to warn users that there may be a risk of code license conflict when using libplist.</p>

<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>xmake
warning: target<span class="o">(</span><span class="nb">test</span><span class="o">)</span> maybe is not compatible with license<span class="o">(</span>LGPL-2.1<span class="o">)</span> of package<span class="o">(</span>libplist<span class="o">)</span>,
we can use shared libraries with LGPL-2.1 or use set_license<span class="o">()</span>/set_policy<span class="o">()</span> to modify/disable license!
</code></pre>
</div>

<p>And if we explicitly pass the project through <code class="highlighter-rouge">set_license("LGPL-2.0")</code> to ensure full compatibility, there will be no warning messages, and for <code class="highlighter-rouge">GPL</code>-related licenses, xmake will also have corresponding detections.</p>

<p>The relatively loose license packages such as MIT, BSD, etc., are directly integrated and used without any warning.</p>

<p>In addition, if we explicitly set <code class="highlighter-rouge">set_license()</code> and the package license conflicts, we will also prompt a warning.</p>

<h3 id="pacman-package-support">Pacman package support</h3>

<p>In the previous version, xmake already supports the automatic integration of third-party warehouse package sources such as vcpkg, conan, clib, homebrew, etc. In the new version, we have added support for the integration of packages managed by pacman.</p>

<p>We support both the installation and integration of the pacman package on archlinux, and the installation and integration of the mingw <code class="highlighter-rouge">x86_64</code>/<code class="highlighter-rouge">i386</code> package of pacman on msys2.</p>

<div class="language-lua highlighter-rouge"><pre class="highlight"><code><span class="n">add_requires</span><span class="p">(</span><span class="s2">"pacman::zlib"</span><span class="p">,</span> <span class="p">{</span><span class="n">alias</span> <span class="o">=</span> <span class="s2">"zlib"</span><span class="p">})</span>
<span class="n">add_requires</span><span class="p">(</span><span class="s2">"pacman::libpng"</span><span class="p">,</span> <span class="p">{</span><span class="n">alias</span> <span class="o">=</span> <span class="s2">"libpng"</span><span class="p">})</span>

<span class="n">target</span><span class="p">(</span><span class="s2">"test"</span><span class="p">)</span>
    <span class="n">set_kind</span><span class="p">(</span><span class="s2">"binary"</span><span class="p">)</span>
    <span class="n">add_files</span><span class="p">(</span><span class="s2">"src/*.c"</span><span class="p">)</span>
    <span class="n">add_packages</span><span class="p">(</span><span class="s2">"zlib"</span><span class="p">,</span> <span class="s2">"libpng"</span><span class="p">)</span>
</code></pre>
</div>

<p>On archlinux, only:</p>

<div class="language-console highlighter-rouge"><pre class="highlight"><code>xmake
</code></pre>
</div>

<p>To install the mingw package on msys2, you need to specify the mingw platform:</p>

<div class="language-console highlighter-rouge"><pre class="highlight"><code>xmake f -p mingw -a [x86_64|i386]
xmake
</code></pre>
</div>

<h3 id="install-any-version-of-the-package">Install any version of the package</h3>

<p>Because the packages in the xmake-repo warehouse have a strict version list and the corresponding sha256 value for the integrity check of the download, this will ensure the reliability and integrity of the package download.</p>

<p>However, it also leads to the inability to fully include all versions of a package. If there is a required version that has not been included, one way is for the user to add pr to the xmake-repo repository to increase the support for the corresponding version.</p>

<p>Another way is to configure <code class="highlighter-rouge"><span class="p">{</span><span class="err">verify</span><span class="w"> </span><span class="err">=</span><span class="w"> </span><span class="err">false</span><span class="p">}</span></code> in xmake.lua to force the skip verification mechanism, so that you can choose to download any version of the package.</p>

<div class="language-lua highlighter-rouge"><pre class="highlight"><code><span class="n">add_requires</span><span class="p">(</span><span class="s2">"libcurl 7.73.0"</span><span class="p">,</span> <span class="p">{</span><span class="n">verify</span> <span class="o">=</span> <span class="kc">false</span><span class="p">})</span>
</code></pre>
</div>

<h3 id="improve-vcpkg-package-integration">Improve vcpkg package integration</h3>

<p>Regarding the dependency integration of the vcpkg package, a lot of improvements have been made in the new version. Not only has the switch support for the windows-static-md package been added, but we have also improved the automatic detection mechanism of the vcpkg command, making it possible in more scenarios It can be detected automatically instead of requiring manual configuration.</p>

<h3 id="improve-custom-cross-toolchain">Improve custom cross toolchain</h3>

<p>In the new version, we continue to make improvements to the custom tool chain to make the automatic detection more intelligent. Usually only need to specify sdkdir, xmake can automatically detect other configurations, such as cross and other information, for example:</p>

<div class="language-lua highlighter-rouge"><pre class="highlight"><code><span class="n">toolchain</span><span class="p">(</span><span class="s2">"my_toolchain"</span><span class="p">)</span>
    <span class="n">set_kind</span><span class="p">(</span><span class="s2">"standalone"</span><span class="p">)</span>
    <span class="n">set_sdkdir</span><span class="p">(</span><span class="s2">"/tmp/arm-linux-musleabi-cross"</span><span class="p">)</span>
<span class="n">toolchain_end</span><span class="p">()</span>

<span class="n">target</span><span class="p">(</span><span class="s2">"hello"</span><span class="p">)</span>
    <span class="n">set_kind</span><span class="p">(</span><span class="s2">"binary"</span><span class="p">)</span>
    <span class="n">add_files</span><span class="p">(</span><span class="s2">"apps/hello/*.c"</span><span class="p">)</span>
</code></pre>
</div>

<p>This is the most streamlined cross-toolchain configuration. It only sets the corresponding SDK path, and then marks it as a complete and independent toolchain by <code class="highlighter-rouge">set_kind("standalone")</code>.</p>

<p>At this time, we can use the command line <code class="highlighter-rouge">--toolchain=my_toolchain</code> to manually switch to this toolchain.</p>

<div class="language-console highlighter-rouge"><pre class="highlight"><code>xmake f --toolchain=my_toolchain
xmake
</code></pre>
</div>

<p>In addition, we can also directly bind it to the corresponding target through <code class="highlighter-rouge">set_toolchains</code> in xmake.lua, then only when this target is compiled, will we switch to our custom toolchain.</p>

<div class="language-lua highlighter-rouge"><pre class="highlight"><code><span class="n">toolchain</span><span class="p">(</span><span class="s2">"my_toolchain"</span><span class="p">)</span>
    <span class="n">set_kind</span><span class="p">(</span><span class="s2">"standalone"</span><span class="p">)</span>
    <span class="n">set_sdkdir</span><span class="p">(</span><span class="s2">"/tmp/arm-linux-musleabi-cross"</span><span class="p">)</span>
<span class="n">toolchain_end</span><span class="p">()</span>

<span class="n">target</span><span class="p">(</span><span class="s2">"hello"</span><span class="p">)</span>
    <span class="n">set_kind</span><span class="p">(</span><span class="s2">"binary"</span><span class="p">)</span>
    <span class="n">add_files</span><span class="p">(</span><span class="s2">"apps/hello/*.c"</span><span class="p">)</span>
    <span class="n">set_toolchains</span><span class="p">(</span><span class="s2">"my_toolchain"</span><span class="p">)</span>
</code></pre>
</div>

<p>In this way, we no longer need to switch the toolchain manually, just execute xmake and it will automatically switch to the my_toolchain toolchain by default.</p>

<p>This is especially useful for embedded development, because there are many cross-compilation tool chains for embedded platforms, and we often need various switches to complete the compilation of different platforms.</p>

<p>Therefore, we can place all toolchain definitions in a separate lua file to define, for example:</p>

<div class="highlighter-rouge"><pre class="highlight"><code>projectdir
    -xmake.lua
    -toolchains
      -my_toolchain1.lua
      -my_toolchain2.lua
      -...
</code></pre>
</div>

<p>Then, we only need to import them through includes in xmake.lua, and bind different tool chains according to different custom platforms:</p>

<div class="language-lua highlighter-rouge"><pre class="highlight"><code><span class="n">includes</span><span class="p">(</span><span class="s2">"toolchains/*.lua"</span><span class="p">)</span>
<span class="n">target</span><span class="p">(</span><span class="s2">"hello"</span><span class="p">)</span>
    <span class="n">set_kind</span><span class="p">(</span><span class="s2">"binary"</span><span class="p">)</span>
    <span class="n">add_files</span><span class="p">(</span><span class="s2">"apps/hello/*.c"</span><span class="p">)</span>
    <span class="k">if</span> <span class="n">is_plat</span><span class="p">(</span><span class="s2">"myplat1"</span><span class="p">)</span> <span class="k">then</span>
        <span class="n">set_toolchains</span><span class="p">(</span><span class="s2">"my_toolchain1"</span><span class="p">)</span>
    <span class="k">elseif</span> <span class="n">is_plat</span><span class="p">(</span><span class="s2">"myplat2"</span><span class="p">)</span> <span class="k">then</span>
        <span class="n">set_toolchains</span><span class="p">(</span><span class="s2">"my_toolchain2"</span><span class="p">)</span>
    <span class="k">end</span>
</code></pre>
</div>

<p>In this way, we can quickly switch the designated platform when compiling to automatically switch the corresponding tool chain.</p>

<div class="language-console highlighter-rouge"><pre class="highlight"><code>xmake f -p myplat1
xmake
</code></pre>
</div>

<p>If some cross-compilation toolchains are complex in structure and automatic detection is not enough, you can use <code class="highlighter-rouge">set_toolset</code>, <code class="highlighter-rouge">set_cross</code> and <code class="highlighter-rouge">set_bindir</code> interfaces according to the actual situation to configure other settings in a targeted manner.</p>

<p>For example, in the following example, we also added some cxflags/ldflags and the built-in system library links.</p>

<div class="language-lua highlighter-rouge"><pre class="highlight"><code><span class="n">toolchain</span><span class="p">(</span><span class="s2">"my_toolchain"</span><span class="p">)</span>
    <span class="n">set_kind</span><span class="p">(</span><span class="s2">"standalone"</span><span class="p">)</span>
    <span class="n">set_sdkdir</span><span class="p">(</span><span class="s2">"/tmp/arm-linux-musleabi-cross"</span><span class="p">)</span>
    <span class="n">on_load</span><span class="p">(</span><span class="k">function</span> <span class="p">(</span><span class="n">toolchain</span><span class="p">)</span>
        <span class="o">-</span> <span class="n">add</span> <span class="n">flags</span> <span class="k">for</span> <span class="n">arch</span>
        <span class="k">if</span> <span class="n">toolchain</span><span class="p">:</span><span class="n">is_arch</span><span class="p">(</span><span class="s2">"arm"</span><span class="p">)</span> <span class="k">then</span>
            <span class="n">toolchain</span><span class="p">:</span><span class="n">add</span><span class="p">(</span><span class="s2">"cxflags"</span><span class="p">,</span> <span class="s2">"-march=armv7-a"</span><span class="p">,</span> <span class="s2">"-msoft-float"</span><span class="p">,</span> <span class="p">{</span><span class="n">force</span> <span class="o">=</span> <span class="kc">true</span><span class="p">})</span>
            <span class="n">toolchain</span><span class="p">:</span><span class="n">add</span><span class="p">(</span><span class="s2">"ldflags"</span><span class="p">,</span> <span class="s2">"-march=armv7-a"</span><span class="p">,</span> <span class="s2">"-msoft-float"</span><span class="p">,</span> <span class="p">{</span><span class="n">force</span> <span class="o">=</span> <span class="kc">true</span><span class="p">})</span>
        <span class="k">end</span>
        <span class="n">toolchain</span><span class="p">:</span><span class="n">add</span><span class="p">(</span><span class="s2">"ldflags"</span><span class="p">,</span> <span class="s2">"--static"</span><span class="p">,</span> <span class="p">{</span><span class="n">force</span> <span class="o">=</span> <span class="kc">true</span><span class="p">})</span>
        <span class="n">toolchain</span><span class="p">:</span><span class="n">add</span><span class="p">(</span><span class="s2">"syslinks"</span><span class="p">,</span> <span class="s2">"gcc"</span><span class="p">,</span> <span class="s2">"c"</span><span class="p">)</span>
    <span class="k">end</span><span class="p">)</span>
</code></pre>
</div>

<p>For more examples of custom toolchains, you can refer to the built-in toolchain definition in the directory of xmake source code: <a href="https://github.com/xmake-io/xmake/blob/master/xmake/ toolchains/">Internal Toolchain List</a></p>

<h3 id="support-mouse-for-menu-configuration">Support mouse for menu configuration</h3>

<p>Remember that xmake also provides graphical terminal menu configuration? It is the classic menu config graphical configuration interface similar to linux kernel.</p>

<div class="language-bash highlighter-rouge"><pre class="highlight"><code>xmake f --menu
</code></pre>
</div>

<p>In the new version, we have also made further improvements to it, adding cross-platform mouse operations. We can use the mouse to click and select various configuration items, which is more convenient.</p>

<p><img src="https://xmake.io/assets/img/index/menuconf.png" width="650px" /></p>

<h2 id="changelog">Changelog</h2>

<h3 id="new-features">New features</h3>

<ul>
  <li>Add new <a href="https://github.com/xmake-io/xrepo">xrepo</a> command to manage C/C++ packages</li>
  <li>Support for installing packages of cross-compilation</li>
  <li>Add musl.cc toolchains</li>
  <li><a href="https://github.com/xmake-io/xmake/issues/1009">#1009</a>: Support select and install any version package, e.g. <code class="highlighter-rouge">add_requires("libcurl 7.73.0", {verify = false})</code></li>
  <li><a href="https://github.com/xmake-io/xmake/issues/1016">#1016</a>: Add license checking for target/packages</li>
  <li><a href="https://github.com/xmake-io/xmake/issues/1017">#1017</a>: Support external/system include directories <code class="highlighter-rouge">add_sysincludedirs</code> for package and toolchains</li>
  <li><a href="https://github.com/xmake-io/xmake/issues/1020">#1020</a>: Support to find and install pacman package on archlinux and msys2</li>
  <li>Support mouse for <code class="highlighter-rouge">xmake f --menu</code></li>
</ul>

<h3 id="change">Change</h3>

<ul>
  <li><a href="https://github.com/xmake-io/xmake/issues/997">#997</a>: Support to set std lanuages for <code class="highlighter-rouge">xmake project -k cmake</code></li>
  <li><a href="https://github.com/xmake-io/xmake/issues/998">#998</a>: Support to install vcpkg packages with windows-static-md</li>
  <li><a href="https://github.com/xmake-io/xmake/issues/996">#996</a>: Improve to find vcpkg directory</li>
  <li><a href="https://github.com/xmake-io/xmake/issues/1008">#1008</a>: Improve cross toolchains</li>
  <li><a href="https://github.com/xmake-io/xmake/issues/1030">#1030</a>: Improve xcode.framework and xcode.application rules</li>
  <li><a href="https://github.com/xmake-io/xmake/issues/1051">#1051</a>: Add <code class="highlighter-rouge">edit</code> and <code class="highlighter-rouge">embed</code> to <code class="highlighter-rouge">set_symbols()</code> only for msvc</li>
  <li><a href="https://github.com/xmake-io/xmake/issues/1062">#1062</a>: Improve <code class="highlighter-rouge">xmake project -k vs</code> plugin.</li>
</ul>


        </article>
        <hr>

        <!-- baidu ads -->
        

        
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
                    
                    <h2 id="chinese">中文</h2>
                    <ul>
                    
                    <li class="relatedPost">
                        <a href="/cn/2020/11/24/xmake-update-v2.3.9/">xmake v2.3.9 发布, 新增独立 Xrepo C/C++ 包管理器
                        
                        </a>
                    </li>
                    
                    
                
            
        
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
        
            
        
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
            
        
            
            
                
            
        
        
            </ul>
        

        
        
            
            
            
                
                    
                        
                        <h2 id="similar_posts">Similar Posts</h2>
                        <ul>
                        
                        <li class="relatedPost">
                            <a href="/2021/12/17/xmake-update-v2.6.2/">Xmake v2.6.2 released, Support building Linux kernel driver module
                            
                            </a>
                        </li>
                        
                        
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
            
        
            
        
            
            
            
                
                    
                        
                        <li class="relatedPost">
                            <a href="/2021/12/03/xmake-update-v2.6.1/">xmake v2.6.1 released, Switch to Lua5.4 runtime, Support Rust and C++ mixed compilation
                            
                            </a>
                        </li>
                        
                        
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
            
        
            
        
            
            
            
                
                    
                        
                        <li class="relatedPost">
                            <a href="/2021/10/30/xmake-update-v2.5.9/">xmake v2.5.9 released, Improve C++20 Modules and support Nim, Keil MDK and Unity Build
                            
                            </a>
                        </li>
                        
                        
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
            
        
            
        
            
            
            
                
                    
                        
                        <li class="relatedPost">
                            <a href="/2021/10/08/xmake-update-v2.5.8/">xmake v2.5.8 is released, Support Pascal/Swig program and Lua53 runtime
                            
                            </a>
                        </li>
                        
                        
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
            
        
            
        
            
            
            
                
                    
                        
                        <li class="relatedPost">
                            <a href="/2021/08/29/xmake-update-v2.5.7/">xmake v2.5.7 released, Use lockfile to freeze package dependencies and Vala/Metal language support
                            
                            </a>
                        </li>
                        
                        
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
                    
                
            
            
        
            
        
        
            </ul>
        

        <div class="post-recent">
    <div class="pre">

        

        

        
        
        

        

        

        
        
        <p><strong>Prev Post</strong> <a href="/2020/11/19/ltui-v2.2/">LTUI v2.2 released, A cross-platform terminal ui library based on Lua</a></p>
        
    </div>

    <div class="nex">

        

        

        
        
        

        

        

        
        
        <p><strong>Next Post</strong> <a href="/2020/11/30/ltui-v2.4/">LTUI v2.4 released, A cross-platform terminal ui library based on Lua</a></p>
        
    </div>
</div>


        <h2 id="comments">Comments</h2>
        






<div id="gitalk-container"></div>
<link rel="stylesheet" href="/css/gitalk.css">
<script src="/js/gitalk.min.js"></script>

<script>
const gitalk = new Gitalk({
  clientID: '73946dc1d9e2276ad0da',
  clientSecret: '12a3cb94361ba3ebc6ecb68cf80d592bfaa8106d',
  repo: 'tboox.github.io',
  owner: 'waruqi',
  admin: ['waruqi'],
  id: location.pathname,      
  language: 'en',
  distractionFreeMode: false  
})

gitalk.render('gitalk-container')
</script>





    </div>
    <button class="anchor"><i class="fa fa-anchor"></i></button>
    <div class="right">
        <div class="wrap">


            <!-- codefund ads -->
            

            <!-- Content -->
            <div class="side content">
                <div>
                    Content
                </div>
                <ul id="content-side" class="content-ul">
                    <li><a href="#chinese">中文</a></li>
                    <li><a href="#similar_posts">Similar Posts</a></li>
                    <li><a href="#comments">Comments</a></li>
                </ul>
            </div>

            <!-- baidu ads -->
            

            <br>
            <div class="side">
                <div>
                    <i class="fa fa-external-link"></i>
                    Links
                </div>
                <ul class="content-ul">
                  <li><a href="http://github.com/waruqi/tbox">tbox</a></li>
                  <li><a href="http://www.xmake.io">xmake</a></li>
                  <li><a href="https://github.com/waruqi">github</a></li>
                </ul>
            </div> 

            <!-- google ads -->
            

            <!-- baidu ads -->
            

            <!-- chitika ads -->
            
        </div>
    </div>

    <!-- baidu ads -->
    
</div>
<script>
/**
 * target _blank
 */
(function() {
    var aTags = document.querySelectorAll('article a:not([id])')
    for (var i = 0; i < aTags.length; i++) {
        aTags[i].setAttribute('target', '_blank')
    }
}());
</script>
<script src="/js/pageContent.js " charset="utf-8"></script>



    <footer class="site-footer">
    <div class="wrapper">
        <p class="description">
             Copyright (c) 2016-2020 tboox.org 
        </p>
        <p class="contact">
            
            <a href="https://github.com/waruqi" title="GitHub"><i class="fa fa-github" aria-hidden="true"></i></a> 
             
            
            <a href="mailto:waruqi@gmail.com" title="email"><i class="fa fa-envelope-o" aria-hidden="true"></i></a> 
            
            
            <a href="https://twitter.com/waruqi" title="Twitter"><i class="fa fa-twitter" aria-hidden="true"></i></a> 
            
            <a href="/feed.xml" title="feed"><i class="fa fa-feed" aria-hidden="true"></i></a> 
        </p>
        <p class="power">
            <span>
                Site powered by <a href="https://jekyllrb.com/">Jekyll</a> & <a href="https://github.com/Gaohaoyang">HyG</a> & <a href="https://pages.github.com/">Github Pages</a>.
            </span>
        </p>
    </div>
</footer>

    <div class="back-to-top">
    <a href="#top" class="scroll">
        <i class="fa fa-arrow-up" aria-hidden="true"></i>
    </a>
</div>

    <script src=" /js/main.js " charset="utf-8"></script>
    <script src=" /js/scroll.min.js " charset="utf-8"></script>
  </body>

</html>
